package ooday05;
/*static修饰的成员变量即为静态变量 注意是成员变量
成员变量分为两种:
1.实例变量:没有static修饰。属于对象，存储在堆中，有几个对象就有几份，由对象/引用访问
2.静态变量:有static修饰，属于类，存储在方法区中，只有一份，由类名访问
何时用:对象所共享的数据*/
public class StaticDemo {
    public static void main(String[] args) {
        StaticVar o1 = new StaticVar();
        //方法区里包含StaticVar类，类里带有静态变量和构造方法(),show()
        //堆中:StaticVar对象，a,构造方法地址，show方法地址
        //栈:o1(局部变量，是引用类型) o1装的是地址指向StaticVar对象
        o1.show();
        StaticVar o2 = new StaticVar();
        o2.show();
        StaticVar o3 = new StaticVar();
        o3.show();

        System.out.println(StaticVar.b);//静态变量常常通过类名点来访问
        System.out.println(o2.b);
        System.out.println(o3.b);
        System.out.println("--------------");
        StaticBlock a1 =new StaticBlock();
        //先调用StaticBlock这个类，自动执行静态块
        StaticBlock a2 =new StaticBlock();
        StaticBlock a3 =new StaticBlock();
        System.out.println("--------------");
          StaticMethod.test();//静态方法也是通过类名点来访问,不需要先创建对象
        StaticMethod bb=new StaticMethod();
        bb.show();

    }
}
